Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


sbapp/sideband/cli/cmd_conv.py 8fe8ef447bb4716f00abd033149cf2ce96839fb4 (8fe8ef44) Text, 13.35 KB

T8b949e# Copyright (c) 2026 Mark Qvist - See LICENSE.md and README.md

Tff7b72import T7ee787re
Tff7b72import T7ee787RNS
Tff7b72from T7ee787.T7ee787commands Tff7b72import Te6edf3CommandTb4b4b4, Te6edf3registry
Tff7b72from T7ee787. Tff7b72import Te6edf3output Tff7b72as Te6edf3out

Tff7b72def Td2a8ff_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4: Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3dest_strTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3dest Tff7b72= Tffa657bytesTff7b72.Td2a8fffromhexTb4b4b4(Te6edf3dest_strTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3destTb4b4b4) Tff7b72== Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffTRUNCATED_HASHLENGTH Tff7b72/Tff7b72/ T79c0ff8Tb4b4b4:
Te6edf3name Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffpeer_display_nameTb4b4b4(Te6edf3destTb4b4b4)
Tff7b72return Te6edf3destTb4b4b4, Te6edf3name
Tff7b72except Tf85149ValueErrorTb4b4b4: Tff7b72pass

Tff7b72tryTb4b4b4:
Tff7b72for Te6edf3conv Tff7b72in Te6edf3sidebandTff7b72.Td2a8fflist_conversationsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3name Tff7b72= Te6edf3outTff7b72.Td2a8ffsanitize_nameTb4b4b4(Te6edf3sidebandTff7b72.Td2a8ffpeer_display_nameTb4b4b4(Te6edf3convTb4b4b4[Ta5d6ff"Ta5d6ffdestTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3name Tff7b72and Te6edf3nameTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72== Te6edf3outTff7b72.Td2a8ffsanitize_nameTb4b4b4(Te6edf3dest_strTb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3convTb4b4b4[Ta5d6ff"Ta5d6ffdestTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3name
Tff7b72except Tf85149ExceptionTb4b4b4: Tff7b72pass

Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72None

Tff7b72def Td2a8ff_cmd_convTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3conversations Tff7b72= Te6edf3sidebandTff7b72.Td2a8fflist_conversationsTb4b4b4(Te6edf3objectsTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72if Tff7b72not Te6edf3conversationsTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffNo conversationsTa5d6ff"

Te6edf3lines Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3outTff7b72.Td2a8ffsectionTb4b4b4(Ta5d6ff"Ta5d6ffConversationsTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ffNameTa5d6ff'Tffd700:Ta5d6ff<24sTffd700}Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ffHashTa5d6ff'Tffd700:Ta5d6ff<34sTffd700}Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ffTrustTa5d6ff'Tffd700:Ta5d6ff>6sTffd700}Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ffUnreadTa5d6ff'Tffd700:Ta5d6ff>7sTffd700}Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ffLast ActivityTa5d6ff'Tffd700:Ta5d6ff>14sTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ff-Ta5d6ff'Tff7b72*T79c0ff24Tffd700}Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ff-Ta5d6ff'Tff7b72*T79c0ff34Tffd700}Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ff-Ta5d6ff'Tff7b72*T79c0ff6Tffd700}Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ff-Ta5d6ff'Tff7b72*T79c0ff7Tffd700}Ta5d6ff Tffd700{Ta5d6ff'Ta5d6ff-Ta5d6ff'Tff7b72*T79c0ff14Tffd700}Ta5d6ff"Tb4b4b4)

Tff7b72for Te6edf3conv Tff7b72in Te6edf3conversationsTb4b4b4:
Te6edf3dest Tff7b72= Te6edf3convTb4b4b4[Ta5d6ff"Ta5d6ffdestTa5d6ff"Tb4b4b4]
Te6edf3name Tff7b72= Te6edf3outTff7b72.Td2a8ffsanitize_nameTb4b4b4(Te6edf3sidebandTff7b72.Td2a8ffpeer_display_nameTb4b4b4(Te6edf3destTb4b4b4)Tb4b4b4)
Te6edf3name Tff7b72= Te6edf3nameTb4b4b4[Tb4b4b4:T79c0ff23Tb4b4b4]
Te6edf3hex_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)
Te6edf3trust Tff7b72= Ta5d6ff"Ta5d6ffyesTa5d6ff" Tff7b72if Te6edf3convTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftrustTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72else Ta5d6ff"Ta5d6ffnoTa5d6ff"
Te6edf3unread Tff7b72= Tffa657strTb4b4b4(Te6edf3convTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffunreadTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4)
Te6edf3last Tff7b72= Te6edf3outTff7b72.Td2a8fftime_agoTb4b4b4(Te6edf3convTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflast_activityTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff Tffd700{Te6edf3nameTffd700:Ta5d6ff<24sTffd700}Ta5d6ff Tffd700{Te6edf3hex_strTffd700:Ta5d6ff<24sTffd700}Ta5d6ff Tffd700{Te6edf3trustTffd700:Ta5d6ff>6sTffd700}Ta5d6ff Tffd700{Te6edf3unreadTffd700:Ta5d6ff>7sTffd700}Ta5d6ff Tffd700{Te6edf3lastTffd700:Ta5d6ff>14sTffd700}Ta5d6ff"Tb4b4b4)

Tff7b72return Ta5d6ff"Tffea00\nTa5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3linesTb4b4b4)

Tff7b72def Td2a8ff_cmd_conv_sendTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3message Tff7b72= Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3argsTb4b4b4[T79c0ff1Tb4b4b4:Tb4b4b4]Tb4b4b4)

Te6edf3destTb4b4b4, Te6edf3name Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"

Te6edf3propagation Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffconfigTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffpropagation_by_defaultTa5d6ff"Tb4b4b4, Tff7b72FalseTb4b4b4)
Te6edf3result Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffsend_messageTb4b4b4(Te6edf3messageTb4b4b4, Te6edf3destTb4b4b4, Te6edf3propagationTb4b4b4)
Tff7b72if Te6edf3resultTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffMessage sent to Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffFailed to send message to Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"

Tff7b72def Td2a8ff_cmd_conv_commandTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3command Tff7b72= Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3argsTb4b4b4[T79c0ff1Tb4b4b4:Tb4b4b4]Tb4b4b4)

Te6edf3destTb4b4b4, Te6edf3name Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"

Te6edf3propagation Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffconfigTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffpropagation_by_defaultTa5d6ff"Tb4b4b4, Tff7b72FalseTb4b4b4)
Te6edf3result Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffsend_commandTb4b4b4(Te6edf3commandTb4b4b4, Te6edf3destTb4b4b4, Te6edf3propagationTb4b4b4)
Tff7b72if Te6edf3resultTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffCommand sent to Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffFailed to send command to Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"


Tff7b72def Td2a8ff_cmd_conv_announceTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3sidebandTff7b72.Td2a8fflxmf_announceTb4b4b4(Tb4b4b4)
Tff7b72return Ta5d6ff"Ta5d6ffLXMF announce sent.Ta5d6ff"

Tff7b72def Td2a8ff_cmd_conv_syncTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3limit Tff7b72= Tff7b72None
Tff7b72if Te6edf3argsTb4b4b4:
Tff7b72tryTb4b4b4: Te6edf3limit Tff7b72= Tffa657intTb4b4b4(Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffInvalid sync limit: Tffd700{Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]Tffd700}Ta5d6ff"

Te6edf3result Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffrequest_lxmf_syncTb4b4b4(Te6edf3limitTb4b4b4)
Tff7b72if Te6edf3resultTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffLXMF sync requestedTffd700{Ta5d6fffTa5d6ff'Ta5d6ff (limit Tffd700{Te6edf3limitTffd700}Ta5d6ff)Ta5d6ff' Tff7b72if Te6edf3limit Tff7b72else Ta5d6ff'Ta5d6ff'Tffd700}Ta5d6ff.Ta5d6ff"
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffSync already in progress or no propagation node configuredTa5d6ff"

Tff7b72def Td2a8ff_cmd_conv_sync_cancelTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3sidebandTff7b72.Td2a8ffcancel_lxmf_syncTb4b4b4(Tb4b4b4)
Tff7b72return Ta5d6ff"Ta5d6ffLXMF sync cancelledTa5d6ff"

Tff7b72def Td2a8ff_cmd_conv_sync_statusTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3status Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffget_sync_statusTb4b4b4(Tb4b4b4)
Te6edf3progress Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffget_sync_progressTb4b4b4(Tb4b4b4)
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffSync status: Tffd700{Te6edf3statusTffd700}Tffea00\nTa5d6ffProgress: Tffd700{Tffa657intTb4b4b4(Te6edf3progress Tff7b72* T79c0ff100Tb4b4b4)Tffd700}Ta5d6ff%Ta5d6ff"

Tff7b72def Td2a8ff_cmd_conv_msgsTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3count Tff7b72= T79c0ff12
Tff7b72if Tffa657lenTb4b4b4(Te6edf3argsTb4b4b4) Tff7b72> T79c0ff1Tb4b4b4:
Tff7b72tryTb4b4b4: Te6edf3count Tff7b72= Tffa657intTb4b4b4(Te6edf3argsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffInvalid message count: Tffd700{Te6edf3argsTb4b4b4[T79c0ff1Tb4b4b4]Tffd700}Ta5d6ff"

Te6edf3destTb4b4b4, Te6edf3name Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"

Te6edf3messages Tff7b72= Te6edf3sidebandTff7b72.Td2a8fflist_messagesTb4b4b4(Te6edf3destTb4b4b4, Te6edf3limitTff7b72=Te6edf3countTb4b4b4)
Tff7b72if Tff7b72not Te6edf3messagesTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffNo messages in conversation with Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff.Ta5d6ff"

Te6edf3lines Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3outTff7b72.Td2a8ffsectionTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffMessages: Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72for Te6edf3msg Tff7b72in Te6edf3messagesTb4b4b4:
Te6edf3direction Tff7b72= Ta5d6ff"Ta5d6ffoutTa5d6ff" Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffsourceTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3sidebandTff7b72.Td2a8fflxmf_destinationTff7b72.Td2a8ffhash Tff7b72else Ta5d6ff"Ta5d6ffinTa5d6ff"
Te6edf3state_str Tff7b72= Te6edf3_format_msg_stateTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4]Tb4b4b4) Tff7b72if Te6edf3direction Tff7b72== Ta5d6ff"Ta5d6ffoutTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ffreceivedTa5d6ff"
Te6edf3ts Tff7b72= Te6edf3outTff7b72.Td2a8fftimestampTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffreceivedTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3content Tff7b72= Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3contentTb4b4b4) Tff7b72< T79c0ff1Tb4b4b4: Te6edf3content Tff7b72= Ta5d6ff"Ta5d6ffNo text content in messageTa5d6ff"
Te6edf3size_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff'Ta5d6fflxmTa5d6ff'Tb4b4b4]Tff7b72.Td2a8ffpacked_sizeTb4b4b4)Tffd700}Ta5d6ff)Ta5d6ff" Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4] Tff7b72else Ta5d6ff"Ta5d6ff"
Te6edf3linesTff7b72.Td2a8ffappendTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff[Tffd700{Te6edf3directionTffd700}Ta5d6ff]Tffd700{Ta5d6ff'Ta5d6ff Ta5d6ff' Tff7b72if Te6edf3direction Tff7b72== Ta5d6ff'Ta5d6ffinTa5d6ff' Tff7b72else Ta5d6ff'Ta5d6ff'Tffd700}Ta5d6ff Tffd700{Te6edf3tsTffd700}Ta5d6ff Tffd700{Te6edf3state_strTffd700}Tffd700{Te6edf3size_strTffd700}Tffea00\nTffd700{Te6edf3contentTffd700}Tffea00\nTa5d6ff"Tb4b4b4)

Tff7b72return Ta5d6ff"Tffea00\nTa5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3linesTb4b4b4)

Tff7b72def Td2a8ff_format_msg_stateTb4b4b4(Te6edf3stateTb4b4b4, Te6edf3methodTb4b4b4)Tb4b4b4:
Tff7b72import T7ee787LXMF
Tff7b72if Te6edf3state Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDELIVEREDTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffdeliveredTa5d6ff"
Tff7b72elif Te6edf3state Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffFAILEDTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6fffailedTa5d6ff"
Tff7b72elif Te6edf3state Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffCANCELLEDTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffcancelledTa5d6ff"
Tff7b72elif Te6edf3state Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffREJECTEDTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffrejectedTa5d6ff"
Tff7b72elif Te6edf3method Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffPROPAGATED Tff7b72and Te6edf3state Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENTTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffpropagatedTa5d6ff"
Tff7b72elif Te6edf3method Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffPAPERTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffpaperTa5d6ff"
Tff7b72elif Te6edf3state Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUND Tff7b72or Te6edf3state Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENDINGTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffsendingTa5d6ff"
Tff7b72elif Te6edf3state Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENTTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffsentTa5d6ff"
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffunknown (Tffd700{Te6edf3stateTffd700}Ta5d6ff)Ta5d6ff"

Tff7b72def Td2a8ff_cmd_conv_createTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3name Tff7b72= Te6edf3argsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72if Tffa657lenTb4b4b4(Te6edf3argsTb4b4b4) Tff7b72> T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ff"

Tff7b72tryTb4b4b4:
Te6edf3dest Tff7b72= Tffa657bytesTff7b72.Td2a8fffromhexTb4b4b4(Te6edf3dest_strTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3destTb4b4b4) Tff7b72!= Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffTRUNCATED_HASHLENGTH Tff7b72/Tff7b72/ T79c0ff8Tb4b4b4:
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffInvalid destination hash: must be Tffd700{Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffTRUNCATED_HASHLENGTH Tff7b72/Tff7b72/ T79c0ff8 Tff7b72* T79c0ff2Tffd700}Ta5d6ff hex charactersTa5d6ff"
Tff7b72except Tf85149ValueErrorTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffInvalid destination hash: Tffd700{Te6edf3dest_strTffd700!r}Ta5d6ff"

Tff7b72if Te6edf3sidebandTff7b72.Td2a8ffhas_conversationTb4b4b4(Te6edf3destTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffConversation with Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff already existsTa5d6ff"

Te6edf3result Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffnew_conversationTb4b4b4(Te6edf3dest_strTb4b4b4, Te6edf3nameTb4b4b4, Te6edf3trustedTff7b72=Tff7b72FalseTb4b4b4)
Tff7b72if Te6edf3resultTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffConversation created with Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Tffd700{Ta5d6fffTa5d6ff'Ta5d6ff (Tffd700{Te6edf3nameTffd700}Ta5d6ff)Ta5d6ff' Tff7b72if Te6edf3name Tff7b72else Ta5d6ff'Ta5d6ff'Tffd700}Ta5d6ff"
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffFailed to create conversation with Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"


Tff7b72def Td2a8ff_cmd_conv_deleteTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3destTb4b4b4, Te6edf3name Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"
Te6edf3sidebandTff7b72.Td2a8ffdelete_conversationTb4b4b4(Te6edf3destTb4b4b4)
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffConversation with Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff deletedTa5d6ff"

Tff7b72def Td2a8ff_cmd_conv_clearTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3destTb4b4b4, Te6edf3name Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"

Te6edf3sidebandTff7b72.Td2a8ffclear_conversationTb4b4b4(Te6edf3destTb4b4b4)
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffMessages cleared for conversation with Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"

Tff7b72def Td2a8ff_cmd_conv_trustTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3destTb4b4b4, Te6edf3name Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"
Te6edf3sidebandTff7b72.Td2a8fftrusted_conversationTb4b4b4(Te6edf3destTb4b4b4)
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffConversation with Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff marked as trustedTa5d6ff"


Tff7b72def Td2a8ff_cmd_conv_untrustTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3destTb4b4b4, Te6edf3name Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"
Te6edf3sidebandTff7b72.Td2a8ffuntrusted_conversationTb4b4b4(Te6edf3destTb4b4b4)
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffConversation with Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff marked as untrustedTa5d6ff"

Tff7b72def Td2a8ff_cmd_conv_nameTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3argsTb4b4b4[T79c0ff1Tb4b4b4:Tb4b4b4]Tb4b4b4)
Te6edf3destTb4b4b4, Te6edf3_ Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"
Te6edf3sidebandTff7b72.Td2a8ffnamed_conversationTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3destTb4b4b4)
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffDisplay name set to Ta5d6ff'Tffd700{Te6edf3nameTffd700}Ta5d6ff'Ta5d6ff for Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"

Tff7b72def Td2a8ff_cmd_conv_paperTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3sidebandTb4b4b4, Te6edf3ctxTb4b4b4)Tb4b4b4:
Te6edf3dest_str Tff7b72= Te6edf3argsTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3message Tff7b72= Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3argsTb4b4b4[T79c0ff1Tb4b4b4:Tb4b4b4]Tb4b4b4)
Te6edf3destTb4b4b4, Te6edf3name Tff7b72= Te6edf3_resolve_destTb4b4b4(Te6edf3sidebandTb4b4b4, Te6edf3dest_strTb4b4b4)
Tff7b72if Te6edf3dest Tff7b72is Tff7b72NoneTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffUnknown destination: Tffd700{Te6edf3dest_strTffd700}Ta5d6ff"
Te6edf3result Tff7b72= Te6edf3sidebandTff7b72.Td2a8ffpaper_messageTb4b4b4(Te6edf3messageTb4b4b4, Te6edf3destTb4b4b4)
Tff7b72if Te6edf3resultTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffPaper message created for Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff"
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffFailed to create paper message for Tffd700{Te6edf3name Tff7b72or Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destTb4b4b4)Tffd700}Ta5d6ff.Ta5d6ff"

Tff7b72def Td2a8ffregisterTb4b4b4(Te6edf3sidebandTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4,Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffList all conversationsTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv
Ta5d6ff Lists all conversations.Ta5d6ff"""Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff0Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_convTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsendTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffSend an LXMF message to a destinationTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv send <dest> <message>
Ta5d6ff Sends an LXMF message to the specified destination hash.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer name
Ta5d6ff <message> Message content (rest of the line, quoted if needed)Ta5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff2Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_sendTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcommandTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffSend an LXMF command to a destinationTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv command <dest> <command>
Ta5d6ff Sends an LXMF command message.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer name
Ta5d6ff <command> Command string (rest of the line)Ta5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff2Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_commandTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffannounceTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffSend an LXMF announceTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv announce
Ta5d6ff Announces the LXMF destination.Ta5d6ff"""Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff0Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_announceTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsyncTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffManage LXMF propagation syncTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv sync [limit]
Ta5d6ff Request message sync from the configured propagation node.

Ta5d6ffconv sync cancel
Ta5d6ff Cancel an in-progress propagation sync.

Ta5d6ffconv sync status
Ta5d6ff Show the current sync status and progress.Ta5d6ff"""Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_syncTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsyncTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcancelTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffCancel in-progress LXMF syncTa5d6ff"Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff0Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_sync_cancelTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsyncTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffShow LXMF sync statusTa5d6ff"Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff0Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_sync_statusTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmsgsTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffList messages in a conversationTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv msgs <dest> [count]
Ta5d6ff Lists recent messages in the conversation with <dest>.
Ta5d6ff Default count is 12.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer name
Ta5d6ff [count] Maximum number of messages to showTa5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff2Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_msgsTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcreateTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffCreate a new conversationTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv create <dest> [name]
Ta5d6ff Creates a new conversation entry for the given destination.
Ta5d6ff Optionally sets a display name.

Ta5d6ff <dest> Destination hash (32 hex chars)
Ta5d6ff [name] Display name for the conversationTa5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff2Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_createTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdeleteTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffDelete a conversation and all its messagesTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv delete <dest>
Ta5d6ff Permanently deletes the conversation with <dest>, including all
Ta5d6ff messages and telemetry data.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer nameTa5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_deleteTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffclearTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffClear all messages in a conversationTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv clear <dest>
Ta5d6ff Removes all messages from the conversation with <dest>,
Ta5d6ff but keeps the conversation entry itself.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer nameTa5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_clearTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftrustTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffMark a conversation as trustedTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv trust <dest>
Ta5d6ff Sets the trust flag on the conversation with <dest>.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer nameTa5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_trustTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffuntrustTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffMark a conversation as untrustedTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv untrust <dest>
Ta5d6ff Removes the trust flag from the conversation with <dest>.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer nameTa5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3max_argsTff7b72=T79c0ff1Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_untrustTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffSet the display name for a conversationTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv name <dest> <name>
Ta5d6ff Sets or updates the display name for the conversation with <dest>.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer name
Ta5d6ff <name> New display nameTa5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff2Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_nameTb4b4b4,
Tb4b4b4)Tb4b4b4)

Te6edf3registryTff7b72.Td2a8ffregisterTb4b4b4(Te6edf3CommandTb4b4b4(
Te6edf3pathTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ffconvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffpaperTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3help_textTff7b72=Ta5d6ff"Ta5d6ffCreate a paper (offline) messageTa5d6ff"Tb4b4b4,
Te6edf3help_detailTff7b72=Ta5d6ff"""Ta5d6ffconv paper <dest> <message>
Ta5d6ff Creates a paper message for offline delivery.

Ta5d6ff <dest> Destination hash (32 hex chars) or known peer name
Ta5d6ff <message> Message contentTa5d6ff"""Tb4b4b4,
Te6edf3min_argsTff7b72=T79c0ff2Tb4b4b4,
Te6edf3handlerTff7b72=Te6edf3_cmd_conv_paperTb4b4b4,
Tb4b4b4)Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────